
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import simulbarr.*;

public class Frame1 extends JFrame
{
    JPanel contentPane;
    SimulBarriere simulBarriere= new SimulBarriere();
    AnimeBarriere animeBarriere = new AnimeBarriere();
    private int adresseI2cBarriere = mat.Cablage.PCF8574_BAR;

    public Frame1() {
	enableEvents(AWTEvent.WINDOW_EVENT_MASK);
	try {
	    jbInit();
	}
	catch(Exception e)
	{
	    e.printStackTrace();
	}
	animeBarriere.start();
    }

    private void jbInit() throws Exception
    {
	contentPane = (JPanel) this.getContentPane();
	this.setResizable(false);
	this.setTitle("Test Simulation Barrière");
	contentPane.setBackground(Color.lightGray);
	contentPane.add(simulBarriere, BorderLayout.CENTER);
    }

    protected void processWindowEvent(WindowEvent e)
    {
	super.processWindowEvent(e);
	if (e.getID() == WindowEvent.WINDOW_CLOSING)
	{
	    System.exit(0);
	}
    }

    public class AnimeBarriere extends Thread
    {
	public void run()
	{
	    byte[] b = new byte[1];
	    boolean ok = false;
	    while(true)
	    {
		try
		{
		    b[0] = (byte)0xed;         // 11101101
		    simulBarriere.write(adresseI2cBarriere, b, 0, 1);
		    do
		    {
			Thread.currentThread().sleep(100);
			simulBarriere.read(adresseI2cBarriere, b, 0, 1);
			ok = ((b[0] & 0x08) == 0x00);
		    }
		    while (!ok);

		    b[0] = (byte)0xf6;         // 1111 0110
		    simulBarriere.write(adresseI2cBarriere, b, 0, 1);
		    do
		    {
			Thread.currentThread().sleep(100);
			simulBarriere.read(adresseI2cBarriere, b, 0, 1);
			ok = ((b[0] & 0x10) == 0x00);
		    }
		    while (!ok);
		}
		catch (InterruptedException ie){}
	    }
	}
    }
}